Do it yourself CNC projects are popping up everywhere and we decided that we wanted to contribute to the growth.
Here are a few of our design goals:
- Modular Design – We wanted to do more than just keep cost down. We wanted things to be reusable and up-gradable. (Arduino , Individual Stepper Motor Drivers and more…)
- Compact Design – Squeezing a 4 axis design into a board the same size and Arduino Uno.
- Opensource Software – 100% GRBL compatible (G-Code Interpreter)
- Opensource Hardware – Arduino has opened up the power of micro-controllers to everyone. (Easy but powerful computing)
- Evolving Development – We are keen to improve on the design and welcome all feedback.
NOW AVAILABLE at our Ebay store… http://stores.ebay.com/Protoneer
… or in assembled from from Elecrow.com
Arduino CNC Shield V3.10 – GRBL v0.9 compatible (PWM Spindle + Soft limits)
Arduino CNC Shield V3.00
Arduino CNC Shield V2.00
- Availability
- Board Layout
- Bill Of Materials
- Assembly
- GRBL Software/Firmware
- Versions
- Gerber Files
- License and Warnings
- Extra Reading
Availability
NOW AVAILABLE at our Ebay store… http://stores.ebay.com/Protoneer
… or in assembled form from Elecrow.com
If you are interested in updates please add your email address to the following mailing list and we will send you more details as the shield develops.
Arduino CNC Shield – Mailing List
Board Layout
The following image displays the functionality of the Arduino pins as used by GRBL.

GRBL Pin Layout
We have designed the Arduino CNC Shield to use all the pins that GRBL implemented. We have also added a few extra pins to make things a little easier.
Extra pins:
- Limit switch pins have been doubled up so that each axis has a “Top/+” and “Bottom/-“. This makes it easier to install two limit switches for each axis. (For use with a normally open switch)
- EStop – These pins can be connected to an emergency stop switch. This does the same as the RESET button on the Arduino board. (We do advice that an extra emergency button also be installed that cuts power to all machinery. A REAL EMERGENCY BUTTON)
- Spindle and coolant control has their own pins.
- External GRBL Command Pins have been broken out allowing you to add buttons for Pause/Hold , Resume and Abort.
- Serial Pins (D0-1) and I2C Pins (A4-5) have their own break out pins for future extensions. I2C can later be implemented by software to control things like spindle speed or heat control.
- Version 3.00 of the board added a jumpers to configure the 4th axis(Clone the other axis’s or run from Pin D12-13), Comms Header(RX+TX , I2C) and a Stepper Control Header(All Pins needed to run 4 steppers)
Bill Of Materials
- Arduino CNC Shield PCB
- 100uF 50v 8mm High Capacitors (493-3289-ND)
- Jumpers (A26228-ND)
- 8-Pin Female Headers(S7006-ND)
- Male Headers(A26514-40-ND)
- Tactile Switch (450-1650-ND)
- Screw Terminal 5mm (A97996-ND)
- Pololu Stepper Drivers . (Please note that the shield was designed to work with A4988 compatable polulu drivers)
- 10K pull-up resistors
Assembly Instructions
Click here for the Assembly instructions for the Arduino CNC Shield V3.XX
Click here for the Assembly instructions for the Arduino CNC Shield V2.XX
GRBL Software/Firmware
GRBL is opensource software that runs on an Arduino Uno that takes G-Code commands via Serial and turns the commands into motor signals.
The GRBL source Code is located here.
I have also written a few turorials on uploading the firmware onto an Arduino Board:
- Quick GRBL setup guide for Windows
- GRBL Arduino Library – Use the Arduino IDE to flash GRBL directly to your Arduino
Versions
- Version 3.10
- Added Support for GRBL 0.9v with PWM Spindle.
- Version 3.00 (4 Axis)
- Enlarged board to add a 4th Axis that can clone the X,Y or Z axis. With a 4th option to use pin D12-13 to control it.(Setting up the 4th Axis)
- Added a breakout header for all the Axis’s.
- Added a communication header for UART(Serail) and I2C.
- Added the a connector for an optional fuse.(Fuse not supplies as it needs to be selected for the current that will be used.)
- Capacitors are mounted horizontally giving more clearance between them and the stepper drivers. Good for ventilation.
- Added a pull-up resistor on the axis enable pins. This prevents the pin from being in a floating state.
- Added 2 mounting holes
- Version 2.02 (3 Axis)
- Fixed High Voltage label
- Removed Diode D1.
- Reduced the number of Via’s.
- Version 2.01
- Added a 5V Breakout
- Filled in both sides with Ground Copper
- Moved RX/TX pins to the side so that 26-Pin header can be used. Same as the headers on a Raspberry Pi.
- Small Text Changes
- Version 2.00
- First official version of the CNC Shield.
- All pins used by GRBL has been broken out.
Gerber Files
Arduino CNC Shield Ver3.00 – Gerber Files
Arduino CNC Shield Ver2.xx – Gerber Files
License and Warnings
This is a work in progress design. All liabilities are on the users at their own risk and they take full responsibility for any harm that might happen to them or their property.
CNC Shield by Protoneer.com is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License.
Based on a work at info.protoneer.com/1
Extra Reading
- Build Your Own CNC Machine – By James Floyd Kelly and P. Hood-Daniel
- CNC Machining Handbook: Building, Programming, and Implementation– By Alan Overby
- Pololu Stepper Motor Drivers – http://www.pololu.com/catalog/category/120
- Pololu FQA covering how to connect stepper motors – http://www.pololu.com/catalog/product/1182/faqs
- GRBL Wiki including upload, setup and running – https://github.com/grbl/grbl/wiki/_pages
- GRBL Supported G-Codes – www.shapeoko.com/wiki/index.php/Grbl
Nice looking shield. Any links to retailers, or better yet the board design?
I can’t find it in your online store.
Thanks for the complements. We are in the process of beta testing the shield so that we can finalize the design.
Would you be interested in being a Beta Tester?
Bert,
Definitely, I have actually designed a board and made my own prototype shield, but yours is more compact and better laid out.
Will even pay for it if necessary. Send a private e-mail if interested.
TomJ
Thanks Tom… I will send you an Email shortly.
If anyone else is interested please let me know, so that I can finalize the design and get it out there.
I’m interested in beta testing. I’ve got 3 pololu drivers and stepper motors just waiting to be used.
Hi David, I have sent you and email.
I’d like to beta test as well if at all possible. I have a project that needs a control board. I have the drivers, motors, and arduino.
Thanks.. I have sent you an email with the details.
Hi Bert!
I have finished bild my cnc project and looking for control board. I plan to use Arduino Uno controller. You board is nice I could try to use device as a Beta tester .
I can do… Will send you an email shortly.
I also would like to be your beta tester. I am also prepared to pay for this.
Will send you a mail shortly…
Hi, im VERY keen on your CNC board, Im going to turn my old mill into a CNC and also thinking about building my own CNC foam cutter for work. im happy to pay for this board, also happy to beta test. cheers Ben
Hi Ben, thanks for the interest. I will send you email with details shortly.
VERY keen to get my hands on this, i have a few CNC projects i want to build and this looks like it will be perfect. please email me about purchasing and beta testing.
thanks
haha… That’s exactly why I designed this little shield. I wanted a CNC board that’s modular and as reusable as possible.
Also have a few more ideas for extensions but I will work on that after I have received so feedback from users.
Pingback: GRBL compatible Arduino CNC shield - RaspberryPiBoards
Pingback: GRBL compatible Arduino CNC shield | Blog of MPRosa
Pingback: How to create an Open Source CNC | Alan C. Assis
Hi, I am building 2 CNC’s. One for milling and one for Laser cutting, etching. I am using 5Volt Nema 17’s.
This would be perfect if it could use the DRV8834 module.
Can I be a beta tester or can you sell me a bare board or the files to have it made?
Thanks Robert… I have sent you an email with the details. At the moment there are a lot of people asking to be beta testers so I can only do one kit at the moment.
I have also uploaded the Gerber files if you would rather get the boards made…. Kind regards,Bertus.
mail me the details on testing.
Willing to give it a try.
Details have been emailed..
Nice looking shield. I am a long time user of GRBL and one thing that comes in handy on a GRBL shield is a socket for an optional 4rth stepper driver that can be used for a second motor on the Y-axis. Jumpers that can slave this 4th driver to the standard Y-axis stepper signal, and ideally, an optional logic inverter on the direction pin for the 4th driver.
Yes… I was looking at that option, but I was running out of room on the shield.
A nice option would be to have a jumper configuration of some kind that allows you to select what axis you want to double up.
How exactly does “doubling up” work? Does that mean that whatever steps are sent to the one driver are sent to the other, or what? If you wanted to have a fourth axis separate, like for an Extruder or something, you could have take the spindle enable pin, and the spindle direction pin, and make those direction and step.
How hard would this be to do in GRBL? I know it would be doable outside of GRBL in your own sketch.
(Also, I want to beta test, but the other post hasn’t showed up yet, and I don’t know why)
Thanks for the question. I have added a little section on Beta testing.
By doubling up you are basically just connecting 2+ stepper drivers up to the same stepper and direction pins.
Using those pins would be an option. But the way GRBL was designed will not make it easy. GRBL is very efficient at what it does and
sends pin changes in one call. So stepp